import { wrapperResponse } from 'src/utils';
import { UserService } from './user.service';
// nest g controller user 命令即可创建user业务模块
import {
  Body,
  Controller,
  Delete,
  Get,
  Param,
  ParseIntPipe,
  Post,
  Req,
} from '@nestjs/common';

// 此处 @Controller('user') 的 user 表示 userController，主要拦截 user 的业务；全局的 appController 就不会有内容，是空的，表示是全局的Controller
@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Get('info')
  getUserInfoByToken(@Req() request) {
    // @Req：用于获取request对象
    return wrapperResponse(
      this.userService.findByUsername(request.user?.username), // 接口返回的是promise，使用wrapperResponse统一对promise进行处理
      '获取用户信息成功',
    );
  }

  @Get(':id')
  getUser(@Param('id', ParseIntPipe) id: number) {
    // 1.通过给@Param()传参直接获取id参数  2.通过ParseIntPipe将参数进行类型转换
    console.log(typeof id);
    return this.userService.findOne(id);
  }

  @Get()
  getAllUser() {
    return this.userService.findAll();
  }

  @Post()
  create(@Body() user) {
    return this.userService.create(user);
  }

  @Delete(':id')
  remove(@Param('id', ParseIntPipe) id: number) {
    return this.userService.remove(id);
  }
}
